home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Audio, Video & Photo / Songbird 0.7.0 / Songbird_0.7.0_windows-i686-msvc8.exe / components / StringUtils.jsm < prev    next >
Text File  |  2008-08-06  |  6KB  |  197 lines

  1. /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
  2. /* vim: set sw=2 :miv */
  3. /*
  4. //
  5. // BEGIN SONGBIRD GPL
  6. //
  7. // This file is part of the Songbird web player.
  8. //
  9. // Copyright(c) 2005-2008 POTI, Inc.
  10. // http://songbirdnest.com
  11. //
  12. // This file may be licensed under the terms of of the
  13. // GNU General Public License Version 2 (the "GPL").
  14. //
  15. // Software distributed under the License is distributed
  16. // on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
  17. // express or implied. See the GPL for the specific language
  18. // governing rights and limitations.
  19. //
  20. // You should have received a copy of the GPL along with this
  21. // program. If not, go to http://www.gnu.org/licenses/gpl.html
  22. // or write to the Free Software Foundation, Inc.,
  23. // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  24. //
  25. // END SONGBIRD GPL
  26. //
  27. */
  28.  
  29. /**
  30.  * \file  StringUtils.jsm
  31.  * \brief Javascript source for the string utility services.
  32.  */
  33.  
  34. //------------------------------------------------------------------------------
  35. //
  36. // String utility JSM configuration.
  37. //
  38. //------------------------------------------------------------------------------
  39.  
  40. EXPORTED_SYMBOLS = [ "SBString",
  41.                      "SBFormattedString",
  42.                      "SBFormattedCountString" ];
  43.  
  44.  
  45. //------------------------------------------------------------------------------
  46. //
  47. // String utility defs.
  48. //
  49. //------------------------------------------------------------------------------
  50.  
  51. const Cc = Components.classes;
  52. const Ci = Components.interfaces;
  53. const Cr = Components.results
  54.  
  55.  
  56. //------------------------------------------------------------------------------
  57. //
  58. // String utility globals.
  59. //
  60. //------------------------------------------------------------------------------
  61.  
  62. var gSBStringDefaultBundle = null;
  63.  
  64.  
  65. //------------------------------------------------------------------------------
  66. //
  67. // String utility localization services.
  68. //
  69. //------------------------------------------------------------------------------
  70.  
  71. /**
  72.  *   Get and return the localized string with the key specified by aKey using
  73.  * the string bundle specified by aStringBundle.  If the string cannot be found,
  74.  * return the default string specified by aDefault; if aDefault is not
  75.  * specified, return aKey.
  76.  *   If aStringBundle is not specified, use the main Songbird string bundle.
  77.  *
  78.  * \param aKey                  Localized string key.
  79.  * \param aDefault              Optional default string.
  80.  * \param aStringBundle         Optional string bundle.
  81.  *
  82.  * \return                      Localized string.
  83.  */
  84.  
  85. function SBString(aKey, aDefault, aStringBundle) {
  86.   // Get the string bundle.
  87.   var stringBundle = aStringBundle ? aStringBundle : SBStringGetDefaultBundle();
  88.  
  89.   // Set the default value.
  90.   var value = aDefault ? aDefault : aKey;
  91.  
  92.   // Try getting the string from the bundle.
  93.   try {
  94.     value = stringBundle.GetStringFromName(aKey);
  95.   } catch(ex) {}
  96.  
  97.   return value;
  98. }
  99.  
  100.  
  101. /**
  102.  *   Get the formatted localized string with the key specified by aKey using the
  103.  * format parameters specified by aParams and the string bundle specified by
  104.  * aStringBundle.
  105.  *   If no string bundle is specified, get the string from the Songbird bundle.
  106.  * If a string cannot be found, return aKey.
  107.  *
  108.  * \param aKey                  Localized string key.
  109.  * \param aParams               Format params array.
  110.  * \param aStringBundle         Optional string bundle.
  111.  *
  112.  * \return                      Localized string.
  113.  */
  114.  
  115. function SBFormattedString(aKey, aParams, aStringBundle) {
  116.   // Get the string bundle.
  117.   var stringBundle = aStringBundle ? aStringBundle : SBStringGetDefaultBundle();
  118.  
  119.   // Set the default value.
  120.   var value = aKey;
  121.  
  122.   // Try formatting string from bundle.
  123.   try {
  124.     value = stringBundle.formatStringFromName(aKey, aParams, aParams.length);
  125.   } catch(ex) {}
  126.  
  127.   return value;
  128. }
  129.  
  130.  
  131. /**
  132.  *   Get and return the formatted localized count string with the key base
  133.  * specified by aKeyBase using the count specified by aCount.  If the count is
  134.  * one, get the string using the singular string key; otherwise, get the
  135.  * formatted string using the plural string key and count.
  136.  *   The singular string key is the key base with the suffix "_1".  The plural
  137.  * string key is the key base with the suffix "_n".
  138.  *   Use the string bundle specified by aStringBundle.  If the string bundle is
  139.  * not specified, use the main Songbird string bundle.
  140.  *   If the string cannot be found, return the default string specified by
  141.  * aDefault; if aDefault is not specified, return aKey.
  142.  *
  143.  * \param aKeyBase              Localized string key base.
  144.  * \param aCount                Count value for string.
  145.  * \param aDefault              Optional default string.
  146.  * \param aStringBundle         Optional string bundle.
  147.  *
  148.  * \return                      Localized string.
  149.  */
  150.  
  151. function SBFormattedCountString(aKeyBase, aCount, aDefault, aStringBundle) {
  152.   // Get the string bundle.
  153.   var stringBundle = aStringBundle ? aStringBundle : SBStringGetDefaultBundle();
  154.  
  155.   // Produce the string key.
  156.   var key = aKeyBase;
  157.   if (aCount == 1)
  158.     key += "_1";
  159.   else
  160.     key += "_n";
  161.  
  162.   // Set the default value.
  163.   var value = aDefault ? aDefault : aKeyBase;
  164.  
  165.   // Try formatting the string from the bundle.
  166.   try {
  167.     value = stringBundle.formatStringFromName(key, [ aCount ], 1);
  168.   } catch(ex) {}
  169.  
  170.   return value;
  171. }
  172.  
  173.  
  174. //------------------------------------------------------------------------------
  175. //
  176. // Internal string utility services.
  177. //
  178. //------------------------------------------------------------------------------
  179.  
  180. /**
  181.  * Return the default Songbird localized string bundle.
  182.  *
  183.  * \return Default Songbird localized string bundle.
  184.  */
  185.  
  186. function SBStringGetDefaultBundle() {
  187.   if (!gSBStringDefaultBundle) {
  188.     gSBStringDefaultBundle =
  189.       Cc["@mozilla.org/intl/stringbundle;1"]
  190.         .getService(Ci.nsIStringBundleService)
  191.         .createBundle("chrome://songbird/locale/songbird.properties");
  192.   }
  193.  
  194.   return gSBStringDefaultBundle;
  195. }
  196.  
  197.